package com.hakim.wfb.customer.service;

import com.hakim.wfb.customer.params.team.*;
import com.hakim.wfb.customer.params.trans.CreditPointParam;
import com.hakim.wfb.customer.result.team.TeamInvestRecordView;
import com.hakim.wfb.customer.result.team.TeamLevelDetailView;
import com.hakim.wfb.customer.result.team.TeamMemberInfoView;
import com.hakim.wfb.customer.result.team.TeamOutlineView;
import com.hakim.wfb.customer.result.trans.CreditPointView;
import com.hkfs.fundamental.api.data.ListResultEx;
import com.hkfs.fundamental.api.data.ObjectResultEx;
import com.hkfs.fundamental.api.data.ResultEx;

/**
 * 团队服务
 * Created by walkman on 2017/7/12.
 */
public interface TeamService {

    /**
     * 获取团队会员列表
     *
     * @param parameter
     * @return
     */
    ListResultEx<TeamMemberInfoView> getTeamMembers(GetTeamMemberParameter parameter);

    /**
     * 获取团队待激活会员列表
     *
     * @param parameter
     * @return
     */
    ListResultEx<TeamMemberInfoView> getInactiveTeamMembers(GetTeamMemberParameter parameter);

    /**
     * 获取直推会员列表
     *
     * @param parameter
     * @return
     */
    ListResultEx<TeamMemberInfoView> getChildren(GetTeamMemberParameter parameter);

    /**
     * 获取直推待激活会员列表
     *
     * @param parameter
     * @return
     */
    ListResultEx<TeamMemberInfoView> getInactiveChildren(GetTeamMemberParameter parameter);

    /**
     * 获取团队会员信息概要
     *
     * @param parameter
     * @return
     */
    ObjectResultEx<TeamOutlineView> getTeamOutline(GetTeamOutlineParameter parameter);

    /**
     * 获取团队等级详情
     *
     * @param parameter
     * @return
     */
    ObjectResultEx<TeamLevelDetailView> getTeamLevelInfo(GetTeamLevelDetailParameter parameter);

    /**
     * 获取团队会员投资记录列表
     *
     * @param parameter
     * @return
     */
    ListResultEx<TeamInvestRecordView> getTeamInvestRecord(GetTeamInvestRecordParameter parameter);

    /**
     * 激活团队成员
     *
     * @param parameter
     * @return
     */
    ResultEx activateMember(ActivateMemberParameter parameter);

    /**
     * 团队业绩
     *
     * @param userid
     * @return
     */
    ResultEx teamAcheivement(String userid);

    /**
     * @param parameter
     * @return
     */
    ListResultEx<CreditPointView> getTeamAchieve(CreditPointParam parameter);
}
